package com.cskaoyan.javase.basic._1identifier;
/**
 * 标识符
 * 问题1：什么是标识符？
 *      上面我们提到过，编程的过程就是变量使用的过程。
 *      在这个使用变量的过程中，毫无疑问是需要知道变量的名字
 *      才能更方便得去使用它。
 *      而在Java代码中，使用标识符表示各种各样的名字，也包括变量名。
 *
 * 问题2：标识符有什么用？
 *      上面已经说过了，标识符是一个表示名字的字符串。
 *
 * 问题3：需要标识符起名字的常见结构有哪些？
 * 主要有：
 *      1.类名（包括后面会学习的接口名、注解名等）
 *      2.方法名（main就是一个方法名）
 *      3.变量名
 *      4.包名
 *
 * 对于标识符而言，如果不符合下列语法要求，会直接编译报错。
 * 标识符的开头必须是：
 * 字母（A~Z 和 a~z）
 * 下划线（_）
 * 美元符号（$）
 * Unicode 字符集中编号为0xC0以及它后面的所有符号
 * (0xC0是一个十六进制数,这实际上包含世界上绝大多数国家的语言)
 *
 * 标识符的组成必须是：
 * 数字（0~9）
 * 字母（A~Z 和 a~z）
 * 美元符号（$）
 * 下划线（_）
 * Unicode 字符集中编号为0xC0以及它后面的所有符号
 *
 * 几个注意事项：
 * 标识符不能以数字开头。
 * 不能是Java中的关键字和保留字。
 * 标识符严格区分大小写。
 *
 * 注: 像空格,制表符,回车,换行等看起来空的什么都没有,但实际上它们也是一个字符,特殊字符,控制字符
 *      它们都是常用的计算机字符,都在ASCII码表中
 *
 *
 * 标识符的,约定俗成的命名规范:
 * 驼峰命名法
 * 在计算机中，起名字是很常见的操作，为了起好名字，驼峰命名法就被发明了。
 * 所谓驼峰，指的是当多个单词共同组成一个字符串时，不同单词的大写和小写间隔起来，形成一种像驼峰一样的凹凸，故称之为驼峰命名法。
 * 使用驼峰命名法可以清晰得看到不同单词组成的新字符串。
 * 驼峰命名法主要有两种：
 *      1.小驼峰式命名法,多个单词组合成一个字符串,第一个单词的首字母小写,从第二个单词开始，首字母都要大写。
 *      例如：myName，myFirstJavaProgram,myJava,name,age
 *
 *      2.大驼峰式命名法,多个单词组合成一个字符串,第一个单词的首字母大写,从第二个单词开始，首字母都要大写。
 *      例如：MyName，MyFirstJavaProgram,MyJava,Name,Age
 *
 * 具体规范:
 * 首先大的原则是
 * 对于Java中任何标识符,都应该使用合法的,拼写正确的英文单词(或者它们的字符串)
 * 禁止使用拼音,更不能使用汉字(当然,特殊情况除外)
 *
 *      1.类名（包括后面会学习的接口名、注解名等）应该使用大驼峰命名法。
 *      2.变量和方法的命名标识符应该使用小驼峰命名法。
 *      3.包名的命名：
 *          多数公司开发的包名会 以反转公司的域名作为开头。
 *          例如在百度做开发，项目的包名开头应该是com.baidu.xxx
 *          比如王道,包名应该以com.cskaoyan开头
 *          注意:
 *          a.包名的单词字母应该全部小写，禁止使用大写。
 *          b.多级包名用"."隔开。
 *          c.包名应该是一个单独的单词
 *              如果存在字符串
 *              那么应该分成多级包目录,而不是直接写一级
 *          d.包名往往使用名词,这时应该使用名字的单数形式
 *              而不能用复数形式
 *              比如一个包下,都是工具类
 *              它的包名,应该叫"util",而不是"utils"
 *         约定:
 *         为了让大家课下看代码更加方便,我们给包名加一个序号
 *         但是大家在开发中不能这么做
 *
 * 除此之外:
 *      1.标识符的命名开头和结尾都禁止使用下划线"_"和美元符号"$"。
 *      实际上,在Java中,标识符的命名应该尽量避免使用"_",不要用美元符号
 *
 *
 *
 *
 *
 *
 * @since 15:08
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 黄色是警告,表示代码这样写不合适,不规范,但不是错误
        // Non-ASCII characters in an com.cskaoyan.javase.basic._1identifier.
        // 说白了,希望标识符的命名使用ASCII码表中的字符
        int 长风;
        int Class;
        // int DataClass#;
        // int _98.3;

        // int Hello World;
        int 好きだ;

        int num;
        int a;
        int b;

        // student --> stu
        // teacher --> tea

        int l1;
    }
}
class Student{}
// class Studnet{}